/*
 * virtual_pwm.c
 *
 *  Created on: 2020年8月12日
 *      Author: Tao
 */

#include "virtual_pwm_user.h"
#include "main.h"
#include "user.h"

/**
 * 使用虚拟PWM库时，应当在他处配置好定时器（由宏定义VIRPWM_TIMER指定），
 * 并在该定时器的中断服务函数中调用void VirPwm_TimIRQHandler()。
 * 同时，应该在外部为void (*VirPwm_SetOutputHandler)(uint8_t state)注册一个函数，
 * 以实现端口的电平翻转操作。
 */

/**
 * @brief 注册为实现端口输出SetOut的服务函数（与具体项目相关）
 * @param VirPwm: 需要操作的虚拟PWM
 */
static void VirPwm_1_SetOutHandler(uint8_t state)
{
//	HAL_GPIO_WritePin(PWM1_GPIO_Port,PWM1_Pin, state);
}

static void VirPwm_2_SetOutHandler(uint8_t state)
{
//	HAL_GPIO_WritePin(PWM2_GPIO_Port,PWM2_Pin, state);
}

/**
 * 定义2个虚拟PWM结构体，用来输出两路PWM
 */
VirPwm _VirPwmDefArray[VIR_PWM_NUM]=
{
		/**
		 * Definition of PWM1
		 */
		{
				.Status = 0,
				.Idle = 0,
				.Precision = 2,		//2位精度
				.Frequency = DAC_PWM_FREQ,
				.DutyCycle = 10,
				.Basetimer = TIM6,
				.SetOut = VirPwm_1_SetOutHandler,
				.count_P = 0,
				.count_N = 100,
		},

		/**
		 * Definition of PWM2
		 */
		{
				.Status = 0,
				.Idle = 0,
				.Precision = 2,		//3位精度
				.Frequency = DAC_PWM_FREQ,
				.DutyCycle = 10,
				.Basetimer = TIM6,
				.SetOut = VirPwm_2_SetOutHandler,
				.count_P = 0,
				.count_N = 100,
		},
};


//指针常量 指向VirPwm定义数组
 VirPwm *const VirPwmDefArray = _VirPwmDefArray;

